# 1.播放声音 playsound第三方库~
# 2.监听键盘按键,比如连续按键N次,播放一个音频,并且让每次播放的音频还不一样~  pynpt
# 使用pip 来安装~
# pip install pynput==1.6.8
# pip install playsound==1.2.2

# 安装好第三方库之后,还需要准备音频未见,把音频文件拷到项目中~
import random
from pynput import keyboard
from playsound import playsound
from threading import Thread

# 记录用户按了多少次键盘
count = 0
soundList = ['sound/001.wav','sound/002.wav','sound/003.wav','sound/004.wav','sound/005.wav','sound/006.wav',
             'sound/007.wav','sound/008.wav','sound/009.wav','sound/010.wav','sound/011.wav','sound/012.wav',
             'sound/013.wav','sound/014.wav','sound/015.wav','sound/016.wav','sound/017.wav','sound/018.wav',
             'sound/019.wav','sound/020.wav','sound/021.wav','sound/022.wav','sound/023.wav','sound/024.wav',
             'sound/025.wav','sound/026.wav','sound/027.wav','sound/028.wav','sound/029.wav','sound/030.wav',
             'sound/031.wav','sound/032.wav'
             ]

def onRelease(key):
    """
    这个函数,就是在用户释放键盘按键的时候,就会被调用到
    这个函数不是咱们自己主动调用的,而是把这个函数交给了Listener,
    由 Listener 在用户释放按键的时候自动调用
    像这样不是咱们自己主动调用,而是交给别人,在合适的时候进行调用
    这样的函数就叫做"回调函数"(callback function)
    :param key:用户按下了那个键
    :return:
    """
    print(key)
    global count
    global soundList
    count += 1
    if count % 10 == 0:
        # 播放音频!
        # 生成随机数
        i = random.randint(0, len(soundList)-1)
        # 此处的播放音频消耗的时间比较多,可能会引起输入的卡顿(不流畅)
        # 可以创建一个线程,在线程中播放音频
        # playsound(soundList[i])
        t = Thread(target=playsound, args=(soundList[i],))
        t.start()

# 当我们创建好 listener 之后,用户的键盘的按键操作就会被捕获到
# 还希望到捕获到之后能够执行一段代码
listener = keyboard.Listener(on_release=onRelease)
listener.start()
listener.join()









